package controleur;

import modele.AbstractModel;

/**
 * Implemente le DP commandes : 
 * Commande qui ajoute une livraison dans une tournee deja calculee
 */
public class GenFdRCmd_AjoutDansTournee extends AbstractCommande{

	// Identifiant de l'intersection ou ajouter la livraison
	private int lidIntersection;
	// Identifiant de l'intersection correspondant a la livraison apres laquelle on doit effectuer l'ajout
	private int lidLivraisonPrec;
	// Index de la plage horaire ou est prevue la livraison ajoutee
	private int lindexPH;
	// Receveur de la commande : le modele
	private AbstractModel modele;
	
	/**
	 * Constructeur de la classe : creer une nouvelle commande
	 * @param leModele Receveur de la commande : le modele qui sera affecte
	 * @param idIntersection Identifiant de l'intersection ou ajouter la livraison
	 * @param idLivraisonPrec Identifiant de l'intersection correspondant a la livraison apres laquelle 
	 * 							on doit effectuer l'ajout
	 * @param indexPH Index de la plage horaire ou est prevue la livraison ajoutee
	 */
	public GenFdRCmd_AjoutDansTournee(AbstractModel leModele, int idIntersection,
			int idLivraisonPrec, int indexPH) {
		modele=leModele;
		lidIntersection=idIntersection;
		lidLivraisonPrec=idLivraisonPrec;
		lindexPH=indexPH;
	}

	/**
	 * Effectue la commande
	 */
	@Override
	public void Do() {
		modele.ajouterLivraisonApresGen(lidIntersection, lidLivraisonPrec, lindexPH);
	}

	/**
	 * Annule la commande
	 */
	@Override
	public void Undo() {
		modele.supprimerLivraisonApresGen(lidIntersection);
	}

}
